package com.itcncp.common.util;
import com.itcncp.common.model.FileResponse;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.UUID;

public class UploadFile{
	 
	
	private static final String LOCAL_PATH = UploadFile.class.getResource("/").getPath();
	


	/**
	 * 上传图片
	 * @param file
	 * @param name 图片名称
	 * @param bucketName
	 * @param remoteUrl
	 * @return
	 */
	private static FileResponse executeForOSS(MultipartFile file, String prevUrl, String name, String bucketName, String remoteUrl){
		FileResponse fileResponse = new FileResponse();
		String localPath = ""; //本地存储路径 完整
		String fileName = file.getOriginalFilename();
		
		
		// 图片名字不为空，说明上传了头像
		if (!fileName.equals("")) {
			// 截取图片后缀
			String suffix = fileName.substring(fileName.lastIndexOf('.'),fileName.length());
			
			if(StringUtils.isEmpty(name)){
				//将图片名称改为唯一
				fileName = MD5Util.md5(String.valueOf(UUID.randomUUID()))+ suffix;
			}else{
				fileName = name + suffix;
			}
			
			if(StringUtils.isNotEmpty(prevUrl)){
				fileName = prevUrl+"/"+fileName;
			}
			
			// 组装本地路径
			localPath = LOCAL_PATH + fileName;
			 
			//保存文件
			saveFile(file, localPath);
			
			fileResponse.setFileName(fileName);
			fileResponse.setRemotePath(remoteUrl + fileName);
			fileResponse.setLocalPath(localPath);
			fileResponse.setSuffix(suffix);
			
			//上传到oss
			try {
				try {
					OSSUtils.uploadFile(localPath, fileName, bucketName);
				} catch (FileNotFoundException e) {
					return null;
				}
			}   finally{
				//删除上传后文件
				File fileManage = new File(localPath);
				if (fileManage.isFile() && fileManage.exists()) {  
					fileManage.delete(); 
				} 
			}

		}
		
		return fileResponse;
	}
	
	/**
	 * 返回网络全路径
	 * @param file
	 * @return
	 */
	private static String execute(MultipartFile file){
		 
		String localPath = ""; //本地存储路径 完整
		String webUrl = ""; //网络访问路径 完整
		String fileName = file.getOriginalFilename();
		
		// 图片名字不为空，说明上传了头像
		if (!fileName.equals("")) {
			// 截取图片后缀
			String suffix = fileName.substring(fileName.lastIndexOf('.'),fileName.length());
			
			// 将图片名称改为唯一
			fileName = MD5Util.md5(String.valueOf(UUID.randomUUID()))+ suffix;
			
			// 组装本地路径
			localPath = LOCAL_PATH + fileName;
			
			// 组装网络路径
//			webUrl = IP + fileName;
			
			//保存文件
			saveFile(file, localPath);

		}
		
		return webUrl;
	}
	

	/**
	 * 保存文件
	 * @param file
	 * @param filePath
	 */
	private static void saveFile(MultipartFile file, String filePath) {

		File targetFile = new File(filePath);
		if (!targetFile.exists()) {
			targetFile.mkdirs();
		}
		try {
			file.transferTo(targetFile);

		} catch (IllegalStateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
	
 
}
 